<?php
App::uses('AppController', 'Controller');
/**
 * Atividades Controller
 *
 * @property Atividade $Atividade
 */
class AtividadesController extends AppController {
	
	var $components = array('FileHandler');
	
	public function beforeFilter(){
		parent::beforeFilter();
	}

/**
 * index method
 *
 * @return void
 */
	public function index() {
		if($this->isAdmin()){
			$this->Atividade->recursive = 0;
			$this->set('atividades', $this->paginate());
		}else
			$this->notAuth();
	}

	public function add() {
		if ($this->request->is('post') || $this->request->is('put')) {
			if ($this->Atividade->save($this->request->data)) {
				$this->Session->setFlash(__('Atividade cadastrada com sucesso'), 'flash/bootstrap', array('class'=>'alert alert-success'));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('Atividade não pôde ser cadastrada'), 'flash/bootstrap', array('class'=>'alert alert-error'));
			}
		}
		$usuarios = $this->Atividade->Usuario->find('list');
		$this->set(compact('usuarios'));
	}
	
	
	public function view($id = null) {
		if($this->isAdmin()){
			if (!$this->Atividade->exists($id)) {
				throw new NotFoundException(__('Invalid endereco'));
			}
			$options = array('conditions' => array('Atividade.' . $this->Atividade->primaryKey => $id));
			$this->set('endereco', $this->Atividade->find('first', $options));
		}
		else{
			$this->notAuth();
		}
	}
	
	public function index_sugerir_atividade() {
		if($this->isAdmin()){
			$this->Atividade->AtividadesSugerida->recursive = 0;
			$this->set('atividades', $this->paginate('AtividadesSugerida'));
		}else
			$this->notAuth();
	}

	public function sugerir_atividade() {
		if ($this->request->is('post')) {
			$this->Atividade->AtividadesSugerida->create();
			$this->request->data['AtividadesSugerida']['usuario_id'] = $this->usuarioSessao['Usuario']['id'];
			$pasta = $this->usuarioSessao['login'];
			$this->FileHandler->diretorio = DIRETORIO_ATIVIDADES;
			$this->request->data['AtividadesSugerida']['anexo'] = $pasta.DS.time();
			if(!$this->FileHandler->validar($this->request->data['AtividadesSugerida']['arquivo'])){
				$this->Session->setFlash(__('Não foi possível validar esse arquivo'), 'flash/bootstrap', array('class'=>'alert alert-error'));
			}
			else {
				if($this->FileHandler->armazenar($pasta, $this->request->data['AtividadesSugerida']['anexo'], $this->request->data['AtividadesSugerida']['arquivo']['tmp_name'])){
					if(empty($this->request->data['Atividade']['titulo'])){
						unset($this->request->data['Atividade']);
					}
					else{
						$this->request->data['Atividade']['usuario_id'] = $this->usuarioSessao['Usuario']['id'];
						$this->request->data['Atividade']['visivel'] = 0;
					}
					if ($this->Atividade->AtividadesSugerida->saveAll($this->request->data)){
						$this->Session->setFlash(__('A proposta foi enviada com sucesso'), 'flash/bootstrap', array('class'=>'alert alert-success'));
						$this->redirect('/pages/blank');
					} else {
						$this->FileHandler->apagarArquivo($this->request->data['AtividadesSugerida']['anexo']);
						$this->Session->setFlash(__('A proposta não foi enviada. Por favor tente novamente!'));
					}
				}
				else {
					$this->Session->setFlash(__('A proposta não foi enviada. Por favor tente novamente!'), 'flash/bootstrap', array('class'=>'alert alert-error'));
				}
			}
		}
		$atividades = $this->Atividade->find('list', array('conditions'=>array('visivel'=>true), 'order'=>'titulo ASC'));
		if($this->Session->read('config.outros_sugestoes'))
			$atividades[] = __('Outro');
		$this->set(compact('atividades'));
	}
	
	public function index_organizar_atividade() {
		if($this->isAdmin()){
			$this->Atividade->AtividadesOrganizada->recursive = 0;
			$this->set('atividades', $this->paginate('AtividadesOrganizada'));
		}else
			$this->notAuth();
	}
	
	public function organizar_atividade() {
		if ($this->request->is('post')) {
			$this->Atividade->AtividadesOrganizada->create();
			$this->request->data['AtividadesOrganizada']['usuario_id'] = $this->usuarioSessao['Usuario']['id'];
			$pasta = $this->usuarioSessao['login'];
			$this->FileHandler->diretorio = DIRETORIO_ATIVIDADES;
			$this->request->data['AtividadesOrganizada']['anexo'] = $pasta.DS.time();
			if(!$this->FileHandler->validar($this->request->data['AtividadesOrganizada']['arquivo'])){
				$this->Session->setFlash(__('Não foi possível validar esse arquivo'), 'flash/bootstrap', array('class'=>'alert alert-error'));
			}
			else {
				if($this->FileHandler->armazenar($pasta, $this->request->data['AtividadesOrganizada']['anexo'], $this->request->data['AtividadesOrganizada']['arquivo']['tmp_name'])){
					if(empty($this->request->data['Atividade']['titulo'])){
						unset($this->request->data['Atividade']);
					}
					else{
						$this->request->data['Atividade']['usuario_id'] = $this->usuarioSessao['Usuario']['id'];
						$this->request->data['Atividade']['visivel'] = 0;
					}
					if ($this->Atividade->AtividadesOrganizada->saveAll($this->request->data)){
						$this->Session->setFlash(__('A proposta foi enviada com sucesso'), 'flash/bootstrap', array('class'=>'alert alert-success'));
						$this->redirect('/pages/blank');
					} else {
						$this->FileHandler->apagarArquivo($this->request->data['AtividadesOrganizada']['anexo']);
						$this->Session->setFlash(__('A proposta não foi enviada. Por favor tente novamente!'));
					}
				}
				else {
					$this->Session->setFlash(__('A proposta não foi enviada. Por favor tente novamente!'), 'flash/bootstrap', array('class'=>'alert alert-error'));
				}
			}
		}
		$atividades = $this->Atividade->find('list', array('conditions'=>array('visivel'=>true), 'order'=>'titulo ASC'));
		if($this->Session->read('config.outros_sugestoes'))
			$atividades[] = __('Outro');
		$this->set(compact('atividades'));
	}

/**
 * edit method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function edit($id = null) {
		if (!$this->Atividade->exists($id)) {
			throw new NotFoundException(__('Invalid endereco'));
		}
		if ($this->request->is('post') || $this->request->is('put')) {
			if ($this->Atividade->save($this->request->data)) {
				$this->Session->setFlash(__('The endereco has been saved'));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The endereco could not be saved. Please, try again.'));
			}
		} else {
			$options = array('conditions' => array('Atividade.' . $this->Atividade->primaryKey => $id));
			$this->request->data = $this->Atividade->find('first', $options);
		}
	}

	
	public function download_sugerir_atividade($id = null){
		if($this->isAdmin()){
			$this->autoRender = false;
			$this->Atividade->AtividadesSugerida->id = $id;
			if (!$this->Atividade->AtividadesSugerida->exists()) {
				throw new NotFoundException(__('Invalid endereco'));
			}
			$atividade = $this->Atividade->AtividadesSugerida->findById($id);
			
			$caminho_completo = WWW_ROOT.WWW_DIRETORIO_ATIVIDADES.DS.$atividade['AtividadesSugerida']['anexo'];
			header('Content-type: application/pdf');
			header('Content-Disposition: attachment; filename="sugestao-'.$atividade['Usuario']['nome'].'.pdf"');
			header("Content-Length: " .(string)(filesize($caminho_completo)));
			//$this->redirect('/'.WWW_DIRETORIO_ATIVIDADES.DS.$atividade['AtividadesSugerida']['anexo']);
			readfile(WWW_ROOT.WWW_DIRETORIO_ATIVIDADES.DS.$atividade['AtividadesSugerida']['anexo']);
		}else{
			$this->notAuth();
		}
	}
	
	public function download_organizar_atividade($id = null){
		if($this->isAdmin()){
			$this->autoRender = false;
			$this->Atividade->AtividadesOrganizada->id = $id;
			if (!$this->Atividade->AtividadesOrganizada->exists()) {
				throw new NotFoundException(__('Invalid endereco'));
			}
			$atividade = $this->Atividade->AtividadesOrganizada->findById($id);
			$caminho_completo = WWW_ROOT.WWW_DIRETORIO_ATIVIDADES.DS.$atividade['AtividadesOrganizada']['anexo'];
			header('Content-type: application/pdf');
			header('Content-Disposition: attachment; filename="sugestao-'.$atividade['Usuario']['nome'].'.pdf"');
			header("Content-Length: " .(string)(filesize($caminho_completo)));
			//$this->redirect('/'.WWW_DIRETORIO_ATIVIDADES.DS.$atividade['AtividadesSugerida']['anexo']);
			readfile($caminho_completo);
		}else{
			$this->notAuth();
		}
	}


	public function delete($id = null) {
		if($this->isAdmin()){
			$this->Atividade->id = $id;
			if (!$this->Atividade->exists()) {
				throw new NotFoundException(__('Invalid endereco'));
			}
			$this->request->onlyAllow('post', 'delete');
			if ($this->Atividade->delete()) {
				$this->Session->setFlash(__('Atividade excluída'), 'flash/bootstrap', array('class'=>'alert alert-success'));
				$this->redirect(array('action' => 'index'));
			}
			$this->Session->setFlash(__('Atividade was not deleted'), 'flash/bootstrap', array('class'=>'alert alert-error'));
			$this->redirect(array('action' => 'index'));
		}else{
			$this->notAuth();
		}
	}
	
	public function delete_organizada($id = null) {
		if($this->isAdmin()){
			$this->Atividade->AtividadesOrganizada->id = $id;
			if (!$this->Atividade->AtividadesOrganizada->exists()) {
				throw new NotFoundException(__('Invalid endereco'));
			}
			$this->request->onlyAllow('post', 'delete');
			if ($this->Atividade->AtividadesOrganizada->delete()) {
				$this->Session->setFlash(__('Atividade excluída'), 'flash/bootstrap', array('class'=>'alert alert-success'));
				$this->redirect(array('action' => 'index_organizar_atividade'));
			}
			$this->Session->setFlash(__('Atividade não foi excluída'), 'flash/bootstrap', array('class'=>'alert alert-error'));
			$this->redirect(array('action' => 'index_organizar_atividade'));
		}else{
			$this->notAuth();
		}
	}
	
	public function delete_sugerida($id = null) {
		if($this->isAdmin()){
			$this->Atividade->AtividadesSugerida->id = $id;
			if (!$this->Atividade->AtividadesSugerida->exists()) {
				throw new NotFoundException(__('Invalid endereco'));
			}
			$this->request->onlyAllow('post', 'delete');
			if ($this->Atividade->AtividadesSugerida->delete()) {
				$this->Session->setFlash(__('Atividade excluída'), 'flash/bootstrap', array('class'=>'alert alert-success'));
				$this->redirect(array('action' => 'index_sugerir_atividade'));
			}
			$this->Session->setFlash(__('Atividade não foi excluída'), 'flash/bootstrap', array('class'=>'alert alert-error'));
			$this->redirect(array('action' => 'index_sugerir_atividade'));
		}else{
			$this->notAuth();
		}
	}
	
	public function visivel($id){
		if($this->Atividade->visivel($id))
			$this->Session->setFlash(__('Atividade agora é visível para todos os usuários'), 'flash/bootstrap', array('class'=>'alert alert-success'));
		else $this->Session->setFlash(__('Atividade agora é visível para todos os usuários'), 'flash/bootstrap', array('class'=>'alert alert-error'));
		$this->redirect('index');
	}
}
